package com.tuling.vipes.controller;


import com.tuling.vipes.service.ElasticsearchSaveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @创建人: Mhh
 * @创建时间: 2021/12/10
 * @描述: 新增类
 */
@RestController
@RequestMapping("/elasticSearch/save")
public class ElasticsearchSaveController {

    @Autowired
    private ElasticsearchSaveService elasticsearchSaveService;

    /**
     * @param classType : 要创建es的索引及映射(一定要通过这种方法创建，否则都是创建出来的映射都是默认的)基于传入对象中的@Document注解
     * @return boolean
     * @throws
     * @Author Mhh
     * @Date 2021/12/9 10:43
     */
    @PostMapping("createIndexAndMapping")
    public boolean createIndexAndMapping(Class<?> classType) {
        return elasticsearchSaveService.createIndexAndMapping(classType);
    }

    /**
     * @param entities : 入参对象(必须是被@Document注解注释的)【入参 可传单个 T，集合Iterable<T>，可变参 T... 】
     * @return T  反参对象
     * @explain : 添加文档
     * @Author Mhh
     * @Date 2021/12/27 10:55
     */
    @PostMapping("saveList")
    public  <T> Iterable<T> save(@RequestBody Iterable<T> entities) {
        return elasticsearchSaveService.save(entities);
    }

    /**
     * @param t : 入参对象(必须是被@Document注解注释的)【入参 可传单个 T，集合Iterable<T>，可变参 T... 】
     * @return T  反参对象
     * @explain : 添加文档
     * @Author Mhh
     * @Date 2021/12/27 10:55
     */
    @PostMapping("save")
    public <T> T save(@RequestBody T t) {
        return elasticsearchSaveService.save(t);
    }

}

